package com.solo.servlet;

import com.solo.entity.User;
import com.solo.service.UserService;
import com.solo.service.impl.UserServiceImpl;
import com.solo.utils.DBUtil;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    private UserService userService;

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 汉字编码设置
        response.setContentType("text/html");
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");

        // 得到用户名和密码
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        userService=new UserServiceImpl();
        User user = userService.selectLoginUser(username, password);

        if (user != null) {
            request.getSession().setAttribute("user", user);
            request.getRequestDispatcher("/views/main.jsp").forward(request, response);
        }else {
            response.sendRedirect(request.getContextPath() + "/views/failure.jsp");
      }


//        第1版的登录，设置用户名和密码分别为一个字符串
//        String user = "admin";
//        String ps = "264309";
//
//        // 用户名和密码是否相等
//        if (username.equals(user) && password.equals(ps)) {
//            // 登录成功
//            // request.getRequestDispatcher("/success").forward(request, response);
//            request.getRequestDispatcher("/main.jsp").forward(request, response);
////            request.getRequestDispatcher(request.getContextPath() + "/index.jsp").forward(request,response);
////            response.sendRedirect(request.getContextPath() + "/index.jsp");
//        }else {
//            // 登录失败重定向到failure.html
//            response.sendRedirect(request.getContextPath() + "/failure.jsp");
//        }

//        第2版的登录将用户名和密码保存在数组中
//        ArrayList<User> userList = new ArrayList<User>();
//
//        boolean isUser = false;
//        boolean isPassword = false;
//
//        userList.add(new User("admin","264309"));
//        userList.add(new User("user1","123456"));
//        userList.add(new User("user2","123"));
//
//        request.setAttribute("userList", userList);
//
//        for(int i = 0;i < userList.size();i++){
//            if(username.equals(userList.get(i).username)){
//                isUser = true;
//                if(password.equals(userList.get(i).password)){
//                    isPassword = true;
//                    break;
//                }
//            }
//        }
//
//        if(isUser == false){
//            // 登录失败重定向到failure.html
//            response.sendRedirect(request.getContextPath() + "/failure.html");
//        } else if (isPassword ==false) {
//            response.sendRedirect(request.getContextPath() + "/failure.html");
//        }else {
//            request.getRequestDispatcher("/main.jsp").forward(request, response);
////          response.sendRedirect(request.getContextPath() + "/main.html");
//        }
//        以上是第3版的登录


//        int isLogin = 0;
//        Statement sql = null;
//        ResultSet rs = null;
//        Connection con = null;
//        // 在数据库中sys_user表中查询用户名和对应的密码
//        try {
//            con = DBUtil.getConn();//连接数据库
//            sql = con.createStatement();
//            rs = sql.executeQuery("SELECT * FROM sys_user");
//            while (rs.next()) {
//                String username1 = rs.getString(2);
//                String password1 = rs.getString(3);
//                // System.out.printf("%s %s\n", username, password1);
//                if (username1.equals(username) && password1.equals(password)) {
//                    isLogin++;
//                    break;
//                }
//                // System.out.printf("%s %s\n", username, password1);
//            }
//            rs.close();
//            sql.close();
//            con.close();
//        } catch (SQLException e) {
//            System.out.println(e);
//            // TODO: handle exception
//        } catch (Exception e) {
//            // 处理 Class.forName 错误
//            e.printStackTrace();
//        } finally {
//            // 最后是用于关闭资源的块
//            try {
//                if (sql != null)
//                    sql.close();
//            } catch (SQLException se2) {
//            }
//            try {
//                if (con != null)
//                    con.close();
//            } catch (SQLException se) {
//                se.printStackTrace();
//            }
//        }
//        //成功从数据库中找到匹配的学号和密码，通过验证，进入主界面
//        if (isLogin == 1) {
//            request.getRequestDispatcher("/main.jsp").forward(request, response);
//        }
//        // 如果在数据库的sys_user表中没找到对应的用户名和密码，校验不通过，返回失败的页面
//        else {
//            response.sendRedirect(request.getContextPath() + "/failure.jsp");
//        }

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}
